package table;
import domain.ANumber;
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.util.Callback;
public class TableSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane borderPane = new BorderPane();
Group root = new Group();
primaryStage.setScene(new Scene(root));
TableView<ANumber> tableView = createTable();
borderPane.setCenter(tableView);
root.getChildren().add(borderPane);
primaryStage.show();
final ObservableList<ANumber> data = FXCollections.observableArrayList(
new ANumber(-9999d),
new ANumber(0d),
new ANumber(2222d)
);
tableView.setItems(data);
}
private TableView<ANumber> createTable() {
TableColumn<ANumber, Double> column = new TableColumn<>();
Callback<TableColumn.CellDataFeatures<ANumber, Double>, ObservableValue<Double>> callback = new PropertyValueFactory<>("double");
column.setCellValueFactory(callback);
Callback<TableColumn<ANumber, Double>, TableCell<ANumber, Double>> cellFactory = new Callback<TableColumn<ANumber, Double>, TableCell<ANumber, Double>>() {
@Override
public TableCell<ANumber, Double> call(TableColumn<ANumber, Double> aNumberDoubleTableColumn) {
return new TableCell<ANumber, Double>(){
@Override
protected void updateItem(Double aDouble, boolean b) {
super.updateItem(aDouble, b); //To change body of overridden methods use File | Settings | File Templates.
if(null == aDouble) {
return;
}
alignmentProperty().setValue(Pos.CENTER_RIGHT);
setText(aDouble.toString());
}
};
}
};
column.setCellFactory(cellFactory);
column.setText("First");
TableView<ANumber> tableView = new TableView<>();
ObservableList<TableColumn<ANumber, ?>> columns = tableView.getColumns();
columns.add(column);
return tableView;
}
}